---
#
# This role sets up rsyncd on a server
#

- name: install necessary packages
  package:
    state: present
    name:
    - rsync
    - xinetd
    - libsemanage-python
  tags:
  - packages
  - rsyncd
  when: (ansible_distribution == 'RedHat' and ansible_distribution_major_version|int < 8) or (ansible_distribution_major_version|int < 30 and ansible_distribution == 'Fedora')

- name: install necessary packages
  package:
    state: present
    name:
    - rsync
    - xinetd
    - python3-libsemanage
  tags:
  - packages
  - rsyncd
  when: (ansible_distribution_major_version|int >= 30 and ansible_distribution == 'Fedora' and ansible_distribution_major_version|int < 34 and ansible_distribution == 'Fedora') or (ansible_distribution == 'RedHat' and ansible_distribution_major_version|int >= 8)

- name: install necessary packages for fedora >= 34
  package:
    state: present
    name:
      - rsync-daemon
      - python3-libsemanage
  tags:
    - packages
    - rsyncd
  when: (ansible_distribution_major_version|int >= 34 and ansible_distribution == 'Fedora') or (ansible_distribution == 'RedHat' and ansible_distribution_major_version|int >= 8)

- name: rsyncd.conf file
  copy: src={{ item }} dest=/etc/rsyncd.conf mode=0644
  with_first_found:
    - "{{ rsyncd_conf }}"
    - rsyncd.conf.{{ inventory_hostname }}
    - rsyncd.conf.{{ host_group }}
    - rsyncd.conf.{{ rsync_group }}
    - rsyncd.conf.default
  when: "'download' not in group_names"
  notify:
  - restart daemon
  ignore_errors: true
  tags:
  - config
  - rsyncd

- name: rsyncd.conf file
  template: src=rsyncd.conf.download.j2 dest=/etc/rsyncd.conf mode=0644
  notify:
  - restart xinetd
  when: "'download' in group_names"
  tags:
  - config
  - rsyncd

- name: xinetd rsync file
  copy: src={{ item }} dest=/etc/xinetd.d/rsync mode=0644
  with_first_found:
    - "{{ rsync }}"
    - rsync.{{ inventory_hostname }}
    - rsync.{{ host_group }}
    - rsync.{{ rsync_group }}
    - rsync.default
  notify:
  - restart xinetd
  when: ansible_distribution_major_version|int < 34 and ansible_distribution == 'Fedora'
  tags:
  - config
  - rsyncd

- name: systemd rsync file
  copy: src=rsyncd.service dest=/usr/lib/systemd/system/rsyncd.service mode=0644
  when: ansible_distribution_major_version|int >= 34 and ansible_distribution == 'Fedora'
  notify:
    - restart daemon
  tags:
    - config
    - rsyncd

- name: make sure xinetd is started
  service: name=xinetd state=started
  when: ansible_distribution_major_version|int < 34 and ansible_distribution == 'Fedora'
  tags:
  - services
  - rsyncd

- name: make sure rsync daemon is started
  service: name=rsyncd enabled=true state=started
  when: ansible_distribution_major_version|int >= 34 and ansible_distribution == 'Fedora'
  tags:
    - services
    - rsyncd
    
- name: set sebooleans so rsync can read dirs
  seboolean: name=rsync_export_all_ro
                    state=true
                    persistent=true
  tags:
    - rsyncd
  
